Skip to content

docs: state the layer openblox occupies and the rule that bounds it - #35

Open
Lutherwaves wants to merge 1 commit into
mainfrom
docs/pillars
Open

docs: state the layer openblox occupies and the rule that bounds it#35
Lutherwaves wants to merge 1 commit into
mainfrom
docs/pillars

Conversation

@Lutherwaves

Copy link
Copy Markdown
Member

The non-goals were already written down. What was missing is why the list has
that shape.

ARCHITECTURE.md listed five things openblox does not do; README.md listed
four. Read cold, each item looks like a gap someone might later fill, so every
feature request gets to argue against one bullet on its own merits — and
individually, most of those arguments are reasonable. That is the shape a scope
erodes in.

The rule

How a sandbox is isolated is openblox's problem.
Which sandbox runs where is yours.

Isolation is the runtime, the egress policy, the filesystem, the user, the
capabilities, the resource caps and the lifetime bounds. Placement is
scheduling, queueing, tenancy, metering, fleet membership and snapshots.

Every existing non-goal is that one rule applied, rather than a separate
opinion. Stating it lets a request be declined by pointing at it, without
relitigating the scope each time.

Where openblox sits

Also missing was the positive claim. openblox is the layer below a sandbox
platform, not a smaller one — the absence of a control plane is what makes it
composable, not something a user has to work around. The comparison is
libvirt, not OpenStack: consumed by platforms, outlived the platforms, never
became one.

The two-tier guarantee, said once, plainly

The strongest claim in the README was in its fourteenth paragraph. It now sits
next to the defaults it qualifies, and distinguishes two things that were
running together:

  • In the library, your code chooses. The defaults are safe and every
    relaxation is explicit and greppable at the call site — weakening is
    visible.
  • Through openbloxd, the choice is not the caller's at all. Profiles live
    in the daemon's config and no request can reach them; a caller names a
    profile, never an image, runtime, user, egress policy or resource cap —
    weakening is unreachable.

The library cannot claim the second, since WithImage takes caller input by
design. Saying so is what makes the daemon's claim credible.

Changes

File
README.md new "Where this sits"; "What it is not" now opens by naming the rule it applies
ARCHITECTURE.md new "The rule" above Non-goals, defining isolation vs placement term by term
CONTRIBUTING.md new "Scope" as the first section — a PR crossing the rule is declined on that basis, so open an issue first
docs/index.md mirrors the README section for the site

Documentation only. No code, no behaviour, no API. docs: cuts no release.

The non-goals were already written down, but as a list of things openblox
happens not to do. Nothing said which layer it occupies or why the list
has that shape, so every item read as a gap someone might later fill.

State the position: openblox is the layer below a sandbox platform, and
one rule decides what belongs in it — how a sandbox is isolated is
openblox's problem, which sandbox runs where is the caller's. Every
non-goal is that rule applied, which is what makes it cheap to decline a
request without relitigating the scope each time.

Also makes the two-tier guarantee explicit where the defaults are
described: the library makes weakening visible, openbloxd makes it
unreachable. That distinction was only stated in passing.
@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@Lutherwaves, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 59 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e7153b84-ff38-48b8-bf08-392df1c16c01

📥 Commits

Reviewing files that changed from the base of the PR and between b599486 and bb4c968.

📒 Files selected for processing (4)
  • ARCHITECTURE.md
  • CONTRIBUTING.md
  • README.md
  • docs/index.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant